package com.lucfzy.log.producer;

import com.lucfzy.rabbitmq.MessageQueue;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

/**
 * 应用日志管理器
 *
 * @author lucfzy
 * @ClassName AppLogger
 * @description 应用日志管理器
 * @created 2021-07-24 13:28
 **/
@Slf4j
@Component
public class AppLogger {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    /**
     * 用于日志记录提示信息日志
     */
    public void info(String msg) {
        // 校验msg是否是空的
        if (!validatorMsg(msg)) {
            return;
        }
        // 打印信息
        log.info("提示信息为：{}", msg);
        // 通过rabbitmq异步保存信息到es中
        // post一条数据到es中，并且第一次是数据库和表的，进而记录一条document。id可以不需要带上，会自动生成
        rabbitTemplate.convertAndSend(MessageQueue.APPLOG, msg);
    }

    /**
     * 用于记录错误信息日志
     */
    public void error(String msg) {
        // 校验msg是否是空的
        if (!validatorMsg(msg)) {
            return;
        }
        // 打印信息
        log.info("提示信息为：{}", msg);
        // 通过rabbitmq异步保存信息到es中
        // post一条数据到es中，并且第一次是数据库和表的，进而记录一条document。id可以不需要带上，会自动生成
        rabbitTemplate.convertAndSend(MessageQueue.APPLOG, msg);
    }

    /**
     * 校验信息不为空
     */
    private boolean validatorMsg(String msg) {
        return !StringUtils.isEmpty(msg);
    }



}
